package dao

import (
	"time"
)

// 这是 Image 的全局公开dao对象，被service层调用!
var ImageDao = imageDao{}

// 图片表
// 这是 image表 的实体类,这个实体类中的字段可以减少，但是不能在其基础上增加!
type Image struct {
	Pid       int32     `json:"pid" form:"pid" db:"pid" v:"pid"`
	Md5       string    `json:"md5" form:"md5" db:"md5" v:"md5"`             // 图片md5
	Path      string    `json:"path" form:"path" db:"path" v:"path"`         // 图片路径(不包括域名)
	Size      int32     `json:"size" form:"size" db:"size" v:"size"`         // 图片的大小(字节)
	Width     int16     `json:"width" form:"width" db:"width" v:"width"`     // 图片宽度
	Height    int16     `json:"height" form:"height" db:"height" v:"height"` // 图片高度
	CreatedAt time.Time `json:"created_at" form:"created_at" db:"created_at" v:"created_at"`
}

// 注意:这是 Image 的私有dao对象，只能在dao层内使用!
type imageDao struct {
	InsertTemplate func(arg Image) (int64, error)       //插入一条记录
	UpdateTemplate func(arg Image) (int64, error)       //更新一条记录
	DeleteTemplate func(id int64) (int64, error)        `arg:"id"` //根据传入的主键删除一条记录
	SelectTemplate func(id int64) (Image, error)        `arg:"id"` //根据传入的主键获取一条记录
	List           func(arg ImageList) ([]Image, error) //模糊分页查询
}

/*
// 这是 image 表的Postman测试参数
// 该结构体中的字段就是: 前后端交互的json字段!
type ImagePostman struct {
pid
md5
path
size
width
height
created_at

}*/

// 这是 image 表的批量请求参数
type ImageReq struct {
	List []Image `json:"list" form:"list"`
}

// 这是 imageDao.List()方法的请求参数
type ImageList struct {
	Page
}
